package com.sunwayhorizo.health.business.clinic.emr.template.query;

import java.util.List;

import javax.ejb.Local;

import com.sunwayhorizo.health.hl7.common.Hl7Exception;
import com.sunwayhorizo.health.hl7.rim.Role;

@Local
public interface TemplateQueryLocal
{

    /**
     * 根据模板名称查询模板动作id
     * @param fileName 模板名称
     * @return List<Long>
     * @throws Hl7Exception
     */
    public List<Long> findDocIdByDocName(String fileName) throws Hl7Exception;
    
    /**
     * 根据模板分类RIM 实体id集合拿到每个分类下的模板文件
     * （不包含二进制文件）
     * @param classIds 模板分类RIM 实体id 集合
     * @return List<Object>
     * @throws Hl7Exception
     */
    public List<Object> findTemplateListByClassIds(List<Long> classIds) throws Hl7Exception;
    
    /**
     * 根据模板分类RIM 实体ID，员工RIM 角色ID查询员工自定义模板集合
     * @param empId 员工RIM 角色ID
     * @param entityId 模板分类RIM 实体ID
     * @return List<Object>
     * @throws Hl7Exception
     */
    public List<Object> findCustomizeTempListByEmpId(String empId,Long entityId ) throws Hl7Exception;
    
    /**
     * 根据模板分类RIM 实体id拿到该分类下的所有模板
     * @param classEntityId 分类实体id
     * @return List<Object>
     * @throws Hl7Exception
     */
    public List<Object> findTemplateListByClassTempId(String classEntityId) throws Hl7Exception;
    
    /**
     * 跟据科室角色ID，分类实体id拿到该分类下的模板
     * @param classId 分类实体id
     * @param deptId 科室id
     * @return List<Object>
     * @throws Hl7Exception
     */
    public List<Object> finddeptTempleteByEntityId(String classId, String deptId) throws Hl7Exception;
    
    /**
     * 跟据科室角色ID、工作组ID集合，分类实体id拿到该分类下的模板
     * @param classId 分类实体id
     * @param deptId 科室角色ID
     * @param workGroupIds 工作组角色ID集合
     * @return List<Object>
     * @throws Hl7Exception
     */
    public List<Object> findTemplateListByEntityIdDeptIdWGIds(String classId, String deptId,List<String> workGroupIds ) throws Hl7Exception;
    
    /**
     * 拿到分类下全院的模板
     * @param classId 分类实体id
     * @param roleType 角色类型
     * @return
     * @throws Hl7Exception
     */
    public List<Object> findAllHospitalTempleteByEntityId(String classId,String roleType) throws Hl7Exception;
    
    
    
    /**
     * 根据模板分类编码拿到模板分类RIM 实体id
     * @param classCode 模板分类编码
     * @return Long
     * @throws Hl7Exception
     */
    public Long findTemplateListByClassCode(String classCode) throws Hl7Exception;
    
    /**
     * 根据模板分类父id拿到分类子id所有集合
     * @param fatherId
     * @return
     * @throws Hl7Exception
     */
    public List<Long> findTemplateClassIdByFatherId(String fatherId) throws Hl7Exception;
    
    /**
     * 根据play EntityId查询角色Role
     * @param entityId
     * @return
     * @throws Hl7Exception
     */
    public Role findClassRoleByEntId(String entityId) throws Hl7Exception;
    
    /**
     * 拿到所有模板分类的Role
     * @return
     * @throws Hl7Exception
     */
    public List<Role> findAllTempClassRoleList() throws Hl7Exception;
    
    /**
     * 根据模板分类父ID查询所有的子类
     * @param fatherId 模板分类父RIM 实体ID
     * @return List<Role> 
     * @throws Hl7Exception
     */
    public List<Role> findAllTempClassRoleByFatherId(String fatherId) throws Hl7Exception;
    
    /**
     * 根据模板分类父ID查询所有的子类roleId
     * @param fatherId 模板分类父RIM 实体ID
     * @return List<Object> 
     * @throws Hl7Exception
     */
    public List<Object> findChildIdsByFatherId(long fatherId) throws Hl7Exception;
    
    /**
     * 根据模板分类编码拿到分类RIM实体id
     * @param classCode 模板分类Code
     * @return Long
     * @throws Hl7Exception
     */
    public Long findTempClassEntyIdByCode(String classCode) throws Hl7Exception;
    
    
    /**
     * 查询全院待审核的模板
     * @return
     * @throws Hl7Exception
     */
    public List<Object> findAllHospitalToAuditorTemp() throws Hl7Exception;
    
    /**
     * 拿到科室待审核的模板
     * @param deptRoleId
     * @return
     * @throws Hl7Exception
     */
    public List<Object> findAllDeptToAuditorTemp(String deptRoleId) throws Hl7Exception;
    
    /**
     * 拿到科室、病区待审核的模板
     * @param deptRoleId
     * @param workGroupRoleIds
     * @return
     * @throws Hl7Exception
     */
    public List<Object> findAllDeptAndWGToAuditorTemp(String deptRoleId,List<String> workGroupRoleIds) throws Hl7Exception;
    
    /**
     * 拿到全院已审核的模板
     * @return List<Object>
     * @throws Hl7Exception
     */
    public List<Object> findAllHospitalAlreadyAuditorTemp() throws Hl7Exception;
    
    /**
     * 拿到全科室已审核的模板
     * @param deptRoleId
     * @return List<Object>
     * @throws Hl7Exception
     */
    public List<Object> findAllDeptAlreadyAuditorTemp(String deptRoleId) throws Hl7Exception;
    
    /**
     * 拿到科室、病区已审核的模板
     * @param deptRoleId
     * @param workGroupRoleIds
     * @return
     * @throws Hl7Exception
     */
    public List<Object> findAllDeptAndWGAlreadyAuditorTemp(String deptRoleId,List<String> workGroupRoleIds) throws Hl7Exception;
}
